The Address Resolution Protocol (ARP) is a very important part of Internet Protocol (IP) networking. ARP is a OSI Layer 2 (Data-Link) protocol used to map Media Access Control (MAC) addresses to IP addresses. All hosts on a local area network or private network are located by their IP address. ARP is the protocol used to associate the IP address to a MAC address.
Before a host can communicate with any other host in the network, the host must have the MAC address for that other host. In TCP/IP networks, the MAC address of an interface can be queried knowing the IP address using the Address Resolution Protocol (ARP) for Internet Protocol Version 4 (IPv4) or the Neighbor Discovery Protocol (NDP) for IPv6. Therefore, the hosts sends out (broadcasts) an ARP packet. The ARP packet contains a simple question: What is the MAC address corresponding to IP address 10.5.5.1? The host that has been configured to use the IP address responds with an ARP packet containing its MAC address. In this way, ARP is used to translate IPv4-addresses (OSI layer 3) into MAC addresses (OSI layer 2).
The ARP software running on a device with a MAC address maintains a table of translations between IP addresses and MAC addresses. This table is normally built dynamically. When ARP receives a request to translate an IP address to a MAC address, it checks for the IP address in its table. If the IP address is found, it returns the MAC address linked with the IP address in its ARP table. If the IP address is not found in the ARP table, ARP broadcast a packet to every host on the network. The packet contains the IP address for which an MAC address is sought. If a receiving host identifies the IP address as its own, it responds by sending its MAC address back to the requesting host. The MAC address and associated IP address in the response is then cached in the ARP table.
ARP table lookup time is important for certain applications to be able to connect as fast as possible. If an IP address is not present in the ARP table, the ARP software has to request for the MAC address over the network. This will cost time and thus performance in setting up a connection.
For example, a large private network within one Virtual Local Area Network (VLAN) has 10000 hosts inside the network. Some of the hosts share the same network interface hardware forming the physical layer and thus have the same MAC address. Furthermore, all hosts in the network could communicate all other hosts in the network. However, before a connection can be established between hosts, the MAC addresses has to be known. A host obtains its IP address from a network manager service on request. Consequently, each host needs to maintain its own ARP table. The ARP table will have 10000-1 entries linking the IP address to the MAC address. Such a table could be built dynamically in the way described above. However, this will result in a lot of ARP requests over network the obtain the MAC address of corresponding hosts. Furthermore, it will take some time to search through the ARP table to retrieve if already present in the ARP table the MAC address corresponding to a IP address or the detect that the IP-MAC pair is not present in the ARP table. If an application has a requirement on the number of connections per second, this would be hard to fulfil.
At start-up of the network, the ARP tables of the hosts could be populated prior to any exchange of data with other hosts. In this initial phase, when the ARP table is populated, there will be a broadcast storm. This means that with a network comprising N hosts there will be N*(N−1) ARP-requests that would sent out to the network. Theoretically, assuming that the size of an ARP-packet is 28 bytes, there could be a burst of about 2*28*10000*10000 bytes over the network to populate the ARP tables for all hosts in the network.
Given the facts above a straightforward implementation of ARP caching is not an option for large private networks.
Furthermore, in some pseudo wire cases (like ATM over IP, or TDM over IP), emulated protocol requires delivery of the first data sent over the newly established connection. In such cases, there is need that the ARP table is fully populated before any data exchange takes place between host over the network. A fully populated ARP-table allows to set-up a connection between hosts without losing the first IP-packet.